/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ihmprojet.core.historique;

import ihmprojet.core.model.Sommet;
import ihmprojet.core.model.operateur.OperateurUnaire;

/**
 *
 * @author Rémi PIOTAIX <remi.piotaix@gmail.com>
 */
public class OperateurUnaireAction extends AbstractAction {

    public enum Todo {

        AJOUTER, SUPPRIMER
    }
    private Todo sens;
    private Sommet sommet;
    private OperateurUnaire opU;

    public OperateurUnaireAction(Todo sens, Sommet sommet, OperateurUnaire opU) {
        this.sens = sens;
        this.sommet = sommet;
        this.opU = opU;
    }

    private void remove() {
        if (!sommet.getOpUnaires().contains(opU)) {
            System.out.println("opérateur introuvable");
        }
        sommet.getOpUnaires().remove(opU);
    }

    private void add() {
        sommet.getOpUnaires().add(opU);
    }

    @Override
    public void doExecute() {
        if (sens == Todo.AJOUTER) {
            add();
        } else {
            remove();
        }
    }

    @Override
    public void doReverse() {
        if (sens == Todo.SUPPRIMER) {
            add();
        } else {
            remove();
        }
    }

    @Override
    public boolean canReverse() {
        return true;
    }

    @Override
    public boolean canExecute() {
        return true;
    }

    @Override
    public String getNom() {
        return sens == Todo.AJOUTER ? "Ajout operateur unaire" : "Suppression operateur unaire";
    }
}
